#pragma once

#include "glare.core.Prerequisites.h"
#include "glare.core.GpuResource.h"
#include "glare.core.GpuBufferDescription.h"

namespace Glare {

	class GpuVertexBufferBinding
	{
	public : GpuVertexBufferBinding() 
				 : Stride(0)
				 , Offset(0)
				 , Buffer(NULL)
			 {
			 }

	public : uint Stride;
	public : uint Offset;
	public : GpuBuffer* Buffer;
	};

	class GpuBuffer : public GpuResource
	{
	protected : GpuBuffer(const GpuBufferDescription& description);
	public : virtual ~GpuBuffer() {}

	public : virtual GpuResourceFactory* GetFactory() const = 0;
	public : const GpuBufferDescription& GetDescription() const;

	public : virtual const Type GetType() const { return GpuResource::Buffer; };

	private : GpuBufferDescription _description;
	};

}

